<?php

namespace app\common;

class ErrorCode
{
    // 通用错误
    const SUCCESS = 200; // 成功
    const BAD_REQUEST = 400; // 请求错误
    const UNAUTHORIZED = 401; // 未授权
    const FORBIDDEN = 403; // 拒绝访问
    const NOT_FOUND = 404;  // 资源不存在
    const UNPROCESSABLE_ENTITY = 422; // 提交的参数格式错误
    const INTERNAL_SERVER_ERROR = 500; // 服务器内部错误，请联系管理员

    /**
     * 错误码说明
     * 采用 A-BB-CCC 五位码结构
     * A (第1位): 错误级别
     * 1: 系统级错误 (System Level) - 服务不可用、内部严重错误。
     * 2: 业务级错误 (Business Level) - 最常见，由用户操作或业务逻辑限制引起。
     * 3: 第三方服务错误 (Third-party Level) - 调用外部API（如短信、支付）失败。
     * BB (第2-3位): 业务模块
     * 00: 通用模块 (General)
     * 01: 用户与权限模块 (User & Auth)
     * 02: 系统管理模块 (System Management, e.g., roles, menus)
     * 03: 内容管理模块 (CMS)
     * 04: 文件/资源管理模块 (File/Asset)
     * 其他自行补充
     * CCC (第4-5-6位): 具体错误
     * 自行补充
     */

    # 系统级错误 (1xxxx)
    const E_SYS_ERROR = 100001; // 系统级错误: 未被捕获的顶层 Exception，需紧急排查
    const E_SYS_DB_ERROR = 100002; // 数据服务异常:数据库连接、查询、写入等严重错误
    const E_SYS_CACHE_ERROR = 100003; // 缓存服务异常 Redis/Memcached 等连接或操作异常
    const E_SYS_SERVICE_UNAVAILABLE = 100004; // 服务暂时不可用 服务熔断或依赖的服务未启动
    const E_SYS_SYSTEM_NOT_INSTALL = 100005; // 系统未安装 未安装系统，请先安装系统

    # 通用业务错误 (200xxx)
    const E_COMMON_INVALID_PARAM = 200001; // 请求参数不合法 ValidateException，参数验证失败
    const E_COMMON_RECORD_NOT_FOUND = 200002; // 您查找的记录不存在 ModelNotFoundException，查询结果为空
    const E_COMMON_REQUEST_METHOD_ERROR = 200003; // 请求方法不支持 HttpMethodNotAllowedException
    const E_COMMON_FORBIDDEN = 200004; // 禁止访问 权限不足，用户尝试访问未授权资源
    const E_COMMON_UNAUTHENTICATED = 200005; // 请先完成登录 未登录或登录已失效
    const E_COMMON_ACTION_TOO_FREQUENT = 200006; // 操作过于频繁，请稍后再试 接口被限流 (Rate Limiting)
    const E_COMMON_VERSION_MISMATCH = 200007; // 数据版本已过期，请刷新后重试 乐观锁冲突，编辑时数据已被他人修改
    const E_COMMON_ACCESS_TOKEN_EXPIRED = 200008; // 访问令牌已过期
    const E_COMMON_ACCESS_TOKEN_INVALID = 200011; // 访问令牌无效
    const E_COMMON_REFRESH_TOKEN_EXPIRED = 200012; // 访问令牌已过期
    const E_COMMON_REFRESH_TOKEN_INVALID = 200013; // 访问令牌无效
    const E_COMMON_MULTI_LOGIN_FORBIDDEN = 200009; // 您已经在其他客户端登录 禁止多端登录后，登录被禁止
    const E_COMMON_DATA_VALIDATION_FAILED = 200010; // 数据验证失败

    const E_COMMON_LOAD_DATA_FAILED = 200012; // detail / getFormData 加载数据失败
    const E_COMMOM_ADD_DATA_FAILED = 200013; // 添加数据失败
    const E_COMMON_UPDATE_DATA_FAILED = 200014; // 更新数据失败
    const E_COMMON_DELETE_DATA_FAILED = 200015; // 删除数据失败
    const E_COMMON_SORT_DATA_FAILED = 200016; // 排序数据失败
    const E_COMMON_HAS_CHILDREN_DATA = 200017; // 存在子级数据

    # 系统验证模块 (202xxx)
    const  E_VALIDATE_NAME_EXISTS = 202001; // 角色名称已存在 创建角色时名称冲突
    const  E_VALIDATE_IN_USE = 202002;  // 色正在被使用，无法删除 删除角色前需与所有用户解绑角
    const E_VALIDATE_HAS_CHILDREN = 202003; // 此菜单包含子菜单，无法删除 删除菜单前需先删除其所有子菜单
    const E_VALIDATE_TYPE_EXISTS = 202004; // 字典类型已存在 创建字典类型时标识冲突

    # 用户与权限模块 (201xxx)
    const E_AUTH_USERNAME_PASSWORD_WRONG = 201001; // 用户名或密码错误 登录时校验失败
    const E_AUTH_USER_DISABLED = 201002; // 您的账户已被禁用 用户状态为“禁用”
    const E_AUTH_USERNAME_EXISTS = 201003; // 该用户名已被使用 创建用户时用户名冲突
    const E_AUTH_ROLE_NOT_FOUND = 201004; // 指定的角色不存在 为用户分配角色时，角色ID无效
    const E_AUTH_PASSWORD_TOO_WEAK = 201005; // 密码强度太弱 密码不符合预设的复杂度规则



}